#pragma once

#include "ScriptCompiler/AST/ASTNode.h"


class CScriptToken;

//class or function decorator
class CDecoratorNode : public CASTNode
{

public:
    CDecoratorNode(std::weak_ptr<CScriptFileContext> InFile)
        : CASTNode( InFile,EASTNodeType::Decorator)
    {
    }

    void AddDecorator(std::shared_ptr<CScriptToken> InDecorator) { Decorators.Add(InDecorator); }

    TVector<std::shared_ptr<CScriptToken>> Decorators;

    bool IsStatic() const;


    void DebugPrint(int32_t InDepth) override;

    std::shared_ptr<CScriptToken> GetFirstToken() override { return Decorators[0]; }
};